
// // 处理http请求的接口
// void http_hander(server *ser, websocketpp::connection_hdl ptr)
// {
//     // 获取connect连接
//     server::connection_ptr con = ser->get_con_from_hdl(ptr);

//     // 获取连接的报文身体
//     std::cout << "body: " << con->get_request_body() << std::endl;

//     // 获取连接url和方法
//     websocketpp::http::parser::request req = con->get_request();
//     std::cout << "method: " << req.get_method() << std::endl;
//     std::cout << "url: " << req.get_uri() << std::endl;

//     // 返回一个html页面
//     con->set_status(websocketpp::http::status_code::ok);
//     con->set_body("<html><body><h1>Hello World</h1></body></html>");
//     con->append_header("Content-Type", "text/html");
// }

// // websocket 握手成功接口
// void wsock_success(server *ser, websocketpp::connection_hdl ptr)
// {
//     std::cout << "握手成功" << std::endl;
// }

// // 连接断开
// void wsock_break(server *ser, websocketpp::connection_hdl ptr)
// {
//     std::cout << "连接断开" << std::endl;
// }

// // websocket处理函数
// void wsock_callback(server *ser, websocketpp::connection_hdl ptr, server::message_ptr msg)
// {
//     server::connection_ptr con = ser->get_con_from_hdl(ptr);
//     std::cout << "opcode: " << msg->get_opcode() << std::endl;
//     std::cout << "payloa: " << msg->get_payload() << std::endl;
//     // 返回应答
//     std::string str = "server echo: " + msg->get_payload();
//     con->send(str, websocketpp::frame::opcode::text);
// }

// // 构建websocketpp服务器, 默认IP 0， 端口：命令行输入
// int main(int argc, char *argv[])
// {
//     int port = std::stoi(argv[1]);

//     server web_ser; // 创建server对象

//     web_ser.set_access_channels(websocketpp::log::alevel::none);

//     // 绑定任务接口
//     web_ser.set_http_handler(bind(http_hander, &web_ser, std::placeholders::_1));
//     web_ser.set_open_handler(bind(wsock_success, &web_ser, std::placeholders::_1));
//     web_ser.set_close_handler(bind(wsock_break, &web_ser, std::placeholders::_1));
//     web_ser.set_message_handler(bind(wsock_callback, &web_ser, std::placeholders::_1, std::placeholders::_2));

//     web_ser.init_asio(); // 初始化asio调度器

//     web_ser.set_reuse_addr(true); // 设置端口复用

//     web_ser.listen(port); // 设置端口

//     web_ser.start_accept(); // 开始接收套接字

//     web_ser.run();

//     return 0;
// }

#include "gobang_server.hpp"

const std::string host = "替换成你的ip地址";
const std::string local = "localhost";
const std::string user = "替换成你的用户名";
const std::string password = "替换为自己的密码";
const std::string db = "gobang";
const uint16_t web_mysql_port = 3306;
const std::string charset = "utf-8";


// ./mybin port int 第三个参数代表是否要成为守护进程
int main(int argc, char *argv[])
{
    int tmp = std::stoi(argv[2]);
    if(tmp == 1)
    {
        int ret = daemon(1,0);
        if(ret == -1)
        {
            error_log("成为守护进程失败,进程退出");
            return 0;
        }
    }
    uint16_t port = std::stoi(argv[1]);

    gobang_server _ser(host.c_str(), user.c_str(), password.c_str(), db.c_str(), web_mysql_port);

    _ser.run(port);
    return 0;
}